Instalando CUDA 5.5 y Pycuda en Ubuntu 13.04

La instalación de CUDA puede resultar un proceso altamente frustrante (generalmente), sin embargo las fuentes de problemas no son tantas como uno en principio podría imaginar, así que una vez que se han detectado éstas se puede instalar el paquete con relativa rapidez.

Es necesario hacer notar que si bien el algoritmo para la instalación de CUDA en Ubuntu debería ser muy similar entre las versiones de ésta distribución, se tienen diferencias muy importantes entre una versión y otra, i.e. una puede presentar errores que la versión anterior no mostraba, o en su defecto puede mostrar menos errores, sin embargo es algo que nunca pasa. El algoritmo que mostramos aquí es para la instalación de CUDA en Ubuntu 13.04. Se puede encontrar gran cantidad de información en la red acerca de los problemas que se presentan durante la instalación del paquete en otras versiones, así como las soluciones que los mismos usuarios han ido encontrando con el paso del tiempo, si esta guía no sirve completamente para la instalación en otra versión, le sugerimos al lector buscar ayuda en blogs.

Instalación de controladores de NVIDIA, NVIDIA Toolkit y ejemplos.

El proceso de instalación que aquí mostramos está dividido en 3 etapas. La primera de ellas consiste en instalar los controladores. Para esto es necesario descargar el archivo cuda_5.5.22_linux_64.run para Ubuntu que se encuentra disponible en la página de NVIDIA https://developer.nvidia.com/cuda-downloads y recordar el lugar en donde se encuentra guardado el archivo.

Hecho esto podemos proceder con la instalación. El primer paso es salirse del entorno gráfico, ésto en Ubuntu se hace tecleando la combinación Ctrl + Alt + F1, es importante no entrar en pánico, puesto que inmediatamente después de teclear esto la computadora mostrará sólamente la terminal, en lugar del amigable ambiente de Ubuntu, la terminal pedirá que se acceda a una cuenta, para esto pedirá primero el nombre de usuario y una vez ingresado éste solicitará la contraseña; la siguiente observación que hacemos es que mientras se teclea la contraseña la computadora parece estar "trabada", ya que no muestra asteriscos cada que se teclea un caracter (como es costumbre), de hecho no muestra nada, pero eso es sólo por seguridad, es necesario ignorar tal hecho, ingresar la contraseña y teclear Enter. Ahora que se ha accedido serán necesarios permisos de superusuario, sugerimos que cada vez que sean necesarios éstos se use el comando sudo antecediendo al comando en cuestión, sin embargo otra opción válida es utilizar el comando su y con esto, de ese punto en adelante todas las órdenes se interpretarán como órdenes dadas por el superusuario.

El primero de los problemas con el que todo usuario que intenta instalar CUDA se encuentra es que aunque está en una terminal el entorno gráfico sigue operando en el fondo, y esto interfiere con la instalación de los controladores de NVIDIA, así que es necesario matar por completo el entorno gráfico, esto se hace ingresando el siguiente comando en la terminal.

  • sudo service lightdm stop

Esto nos evitará tener (en principio) errores derivados de interferencia del ambiente gráfico con el instalador. Una vez solucionado este problema podemos comenzar la instalación, para esto es necesario movernos a la carpeta en que se ecuentra el archivo .run previamente descargado y ejecutarlo, sin embargo es necesario cambiar los permisos del archivo para poderlo ejecutar ya que originalmente no es un archivo con estas características, existen varios comandos para volver ejecutable un archivo, uno de ellos es el siguiente:

  • sudo chmod +x cuda_5.5.22_linux_64.run

Ahora contamos con un archivo ejecutable y hasta esta instancia nos es posible comenzar con la instalación de los controladores de CUDA, resaltamos que no instalaremos al mismo tiempo los controladores, el toolkit y los ejemplos, sino que lo haremos por fases instalando uno a la vez durante tres etapas. Para comenzar con la primera ejecutamos el archivo .run con el siguiente comando:

  • ./cuda_5.5.22_linux_64.run

En ocasiones el instalador detecta conflictos con un codec de Ubuntu (Noveau) y arroja un error, si esto sucede, el mismo instalador genera una archivo auxiliar para no tener este problema la próxima vez que sea ejecutado; si esto sucede hay que reiniciar el sistema y nuevamente seguir todos los pasos hasta el momento en que se ejecuta el archivo .run. Si no se presenta ningún conflicto con Noveau comenzará a correr el instalador sin problemas, al correr el archivo .run se desplegarán los términos y condiciones para el uso de la paquetería de NVIDIA, al terminar preguntará si se aceptan los términos y condiciones, uno debe ingresar accept, posteriormente el instalador informará que está a punto de instalar software que no cuenta con soporte y preguntará si se desea continuar, en este caso sólo tecleamos la letra y (yes) para continuar; posteriormente preguntará si se desea instalar el driver, aceptamos de nuevo con y; las siguientes dos opciones que salgan las negaremos por el momento tecleando n en cada una, estas opciones corresponden a la instalación del toolkit y las muestras. Una vez concluida la instalación del driver, que notaremos por que el instalador muestra una pantalla al final informando si la instalación fue o no exitosa, podemos volver al ambiente gráfico con el comando:

  • sudo service lightdm start

A partir de este momento podemos continuar la instalación en una terminal de Ubuntu. En la terminal accedemos al directorio en que se encuentre el archivo, pero antes de ejecutar de nuevo el archivo .run es necesario que instalemos algunos paquetes y desinstalemos otros.

NVIDIA da una lista de prerrequisitos, i.e. algunos programas y controladores necesarios para poder llevar a cabo la instalación, sin embargo debemos proceder cautelosamente en este aspecto, primero instalamos el siguiente paquete

  • sudo apt-get install freeglut3 freeglut3-dev

Una vez instalado tenemos que remover los compiladores que Ubuntu 13.04 tiene por default e instalar los "viejos" compiladores, esto lo hacemos con los siguientes comandos:

  • sudo rm /usr/bin/cpp
  • sudo rm /usr/bin/gcc
  • sudo rm /usr/bin/g++

Ahora instalamos los viejos compiladores y creamos algunas ligas suaves, con el fin de que cada vez que el sistema mande llamar a los compiladores con el nombre predefinido en la instalación sepa en dónde encontrarlos:

  • sudo apt-get install gcc-4.6 g++-4.6
  • sudo ln -s /usr/bin/cpp-4.6 /usr/bin/cpp
  • sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc
  • sudo ln -s /usr/bin/g++-4.6 /usr/bin/g++

Después instalamos los prerrequisitos faltantes con

  • sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

Si se concluyeron satisfactoriamente todos los pasos anteriores nos encontramos en condiciones para instalar tanto el toolkit como los ejemplos, para este fin volvemos a ejecutar el archivo .run pero en esta etapa sólo elegimos la opción que nos permite instalar el toolkit y decimos que no a las otras dos opciones; al aceptar la opción del toolkit el instalador nos preguntará la carpeta en la que deseamos instalarlo y nos da una dirección predefinida, sugerimos que se acepte esta direción, sólo hay que pulsar la tecla Enter y con esto el instalador podnrá las cosas en la carpeta antes mencionada. Concluido este paso es necesario agregar algunas lineas al archivo bash.bashrc que se encuentra localizado en la carpeta /etc/

  • export PATH=/usr/local/cuda-5.5/bin:\$PATH
  • export LD_LIBRARY_PATH=/usr/local/cuda-5.5/lib:/usr/local/cuda-5.5/lib64:\$LD_LIBRARY_PATH
  • export PATH=/usr/local/cuda/bin:$PATH

Por último instalaremos los ejemplos, estrictamente hablando, no necesitamos instalarlos para que funcione CUDA, sin embargo son útiles para verificar si la instalación se llevó a cabo correctamente en el sistema. Para instalar los ejemplos volvemos a ejecutar a nuestro viejo amigo el archivo .run y esta vez sólo damos como válida la opción de instalar los ejemplos, al aceptar esta opción el instalador preguntará en qué carpeta se encuentra el toolkit y dónde deseamos instalar los ejemplos, si durante la instalación del toolkit elegimos que se instalara en la carpeta predefinida entonces sólo tecleamos Enter y dejamos que el instalador busque en las carpetas predefinidas, de otra manera es necesario ingrsar las ruta de la carpeta en donde se instaló el toolkit y donde se instalarán los ejemplos.

Si se ejecuta el paso anterior sin problema hemos terminado, sin embargo puede surgir un problema al momento de instalar los ejemplos, en terminal se muestra el mensaje de que la instalación de los ejemplos ha fallado, si esto pasa, no debe entrar en pánico, si la cuenta que usa en terminal no es de superusuario tecleé

  • cd

Si está logeado como superusuario muévase a la carpeta home del usuario dueño de la cuenta en donde se instalaron los drivers

  • cd /home/usuario/

Dentro de esta carpeta teclee el siguiente comando

  • cd NVIDIA_CUDA-5.5_Samples/NVIDIA_CUDA-5.5_Samples/

y con el fin de compilar los ejemplos ejecute el siguiente comando

  • make

Éste paso debería ejecutarse sin problemas, y una vez finalizado el proceso (que puede durar del orden de 30 minutos) tendremos los ejemplos instalados correctamente. Al terminar este paso es necesario que reinicie el equipo.

Lo siguiente que tenemos que hacer es comprobar si CUDA funciona correctamente, para esto sugerimos lo siguiente; muévase a la siguiente carpeta, con el fin de obtener una grata impresión (y vaya impresión)

  • cd NVIDIA_CUDA-5.5_Samples/NVIDIA_CUDA-5.5_Samples/5_simulations/fluidsGL

Aquí es donde la diversión comienza, prepare una bolsa de palomitas de maíz (coma sólo con una mano porque ocupará la otra), y consiga un monitor enorme y de buena resolución (no es realmente necesario), ya que tenga todo esto listo tecleé

  • ./fluidsGL

Aparecerá una ventana con un fondo por así decirlo granulado, tome el ratón con la mano que no tenga mantequilla de palomitas mantenga presionado cualquiera de los tres botones del ratón y muévalo en su dirección predilecta.

Bienvenido a CUDA

CUDA 6 en Ubuntu 14.04

Instalación del controlador

La instalación de CUDA 6 en Ubuntu 14.04 es mucho más simple, primero, es necesario contar con el gestor de paquetes synaptic, si no se tiene, se puede instalar con

  • sudo apt-get install synaptic

Una vez ahí, tan sólo es necesario buscar nvidia 331, instalar dicha versión del driver y listo, la mayor complicación ha sido superada.

Instalación del toolkit y los ejemplos

Lo siguiente es descargar el archivo .run correspondiente a la versión 6.0 de CUDA y hacerlo ejecutable, esto utilizando el comando

  • sudo chmod 755 nombre_del_archivo.run

lo corremos con

  • ./nombre_del_archivo.run

Al principio nos dará los términos y condiciones de uso, que obviamente leeremos de principio a fin, cuando se termine de leer eso teclearemos accept para continuar, posteriormente aparece la pregunta de si deseas instalar el driver, dado que eso ya lo hicimos teclearemos n, la siguiente pregunta es si desear instalar el toolkit en esta aceptamos, después pregunta por las muestras, por lo pronto contestamos que no a eso. La instalación del toolkit debería ejecutarse sin problemas. Al terminar es necesario exportar el PATH, esto se logra ingresando los siguientes comandos en una terminal

  • export PATH=/usr/local/cuda-6.0/bin:\$PATH
  • export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib64:\$LD_LIBRARY_PATH

Cuando esté listo corremos de nuevo el archivo .run y ahora sólo aceptamos que se instalen las muestras, esto copiará una carpeta en nuestro home llamada NVIDIA-CUDA-6.0_Samples nos movemos hacia dicha carpeta con

  • cd NVIDIA-CUDA-6.0_Samples/

Si dentro de esta carpeta hay otra con el mismo nombre nos movemos hacia ella y tecleamos

  • sudo make

si no hay otra carpeta con el mismo nombre sólo es necesario teclear el comando de arriba (tomará tiempo $\approx$ media hora).

Con esto tendremos instalado completamente el controlador de NVIDIA, el toolkit de CUDA y las muestras estarán compiladas, con mucho menos sangre que la versión anterior de CUDA.

CUDA 7.0 en Ubuntu 14.04

Cada vez se vuelve más amigable la instalación de CUDA, la nueva versión 7.0 es el colmo de la amabilidad. Para instalarla es necesario entrar a la página de descargas de NVIDIA elegir la opción linux x86 y en la sección de Ubuntu 14.04 descargar el archivo .deb que pesa 10KB y el archivo .run con esto se ponen los siguientes comandos en la terminal

  • sudo dpkg -i nombre_del_archivo.deb
  • sudo apt-get update
  • sudo apt-get install cuda

Con esto tendremos el controlador de NVIDIA instalado, lo siguiente en la lista es instalar el toolkit y los ejemplos; los pasos a seguir aquí son casi los mismos que los que en la sección anterior con la salvedad de que para exportar el PATH usamos los comandos

  • export PATH=/usr/local/cuda-7.0/bin:\$PATH
  • export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:\$LD_LIBRARY_PATH

La carpeta de los ejemplos cambia de nombre a NVIDIA-CUDA-7.0_Samples, haciendo dichos cambios los pasos a seguir son idénticos

Instalación de PyCUDA

Para la instalación de PyCUDA y en general para el cálculo científico utilizando Python necesitamos la librería NumPy. NumPy es el paquete fundamental para cómputo científico con Python, contiene entre otras cosas la capacidad de usar arreglos en N dimensiones, funciones sofisticadas, herramientas para integrar códigos escritos en C/C++ y Fortran a Python y capacidad de realizar operaciones de álgebra lineal, transformadas de Fourier y números aleatorios. La instalación de NumPy es muy sencilla, para esto sólo es necesario ejecutar el siguiente comando en una terminal

  • sudo apt-get install python-numpy -y

Con NumPy en la computadora tenemos al alcance un sinnúmero de facilidades que de otra forma resultaría un poco engorroso de programar, el punto de NumPy es evitar perder el tiempo programando por ejemplo la función seno para después utilizarla, entre otras ventajas qué reporta usar éste paquete. Ya que contemos con NumPy en la computadora será necesario agregar otras librerías que se utilizan durante el proceso de instalación de PyCUDA, lo cual hacemos con el siguiente comando

  • sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev -y

Después de instalar estos paquetes estamos en condiciones de iniciar la siguiente etapa en la instalación de PyCUDA. Una vez contando con los prerrequisitos es necesario descargar el paquete de PyCUDA que se encuentra en la siguiente dirección https://pypi.python.org/pypi/pycuda. Ahora tenemos el paquete en nuestra computadora. Posteriormente nos movemos con la consola hasta la carpeta donde guardamos el archivo comprimido y lo desempaquetamos tecleando esto en la terminal

  • tar xzvf pycuda-VERSION.tar.gz

En donde en lugar de VERSION ponemos los números correspondientes a la versión de PyCUDA que descargamos. Esto a su vez crea una carpeta con todos los archivos que el sistema utilizará para instalar PyCUDA, es necesario que de aquí en adelante los comandos se ejecuten en la carpeta que se creó al comprimir el archivo, por lo tanto debemos movernos hacia ella, lo cual logramos metiendo la siguiente instrucción en la terminal

  • cd pycuda-VERSION

Una vez en la carpeta tenemos que seguir tres pasos: configurar, que básicamente es preparar al sistema para llevar a cabo la instalación; preparar, que consiste en alistar el programa para ser instalado, y por último instalar. Para configurar insertamos cuidadosamente el siguiente comando en la terminal, haciendo unas pequeñas consideraciones; el la siguiente instrucción --python-exe=/usr/bin/pythonVER cambiamos VER por la versión de Python que estemos utilizando y hacemos esto mismo para la instrucción --boost-python-libname=boost_python-mt-pyVER

  • ./configure.py --python-exe=/usr/bin/pythonVER --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-pyVER --boost-thread-libname=boost_thread-mt --no-use-shipped-boost

Posteriormente debemos hacer un pequeño cambio en el archivo siteconfig.py que se encuentra en esta misma carpeta remplazamos el valor asociado a CUDA_ENABLE_GL cambiando la linea de código respectiva por lo siguiente

  • CUDA_ENABLE_GL = True

Ahora que tenemos el sistema configurado lo siguiente que debemos hacer es avisarle al programa que se prepare para ser instalado, la forma de avisarle es por medio del siguiente comando

  • make -j 4

Ya le avisamos al sistema que vamos a instalar, y el programa ya está preparado para salir a la fiesta, lo siguiente que debemos hacer es dar inicio a la fiesta, es decir, instalar

  • sudo python setup.py install

Y listo, a diferencia de CUDA, PyCUDA es muy amable a la hora de ser instalado, es decir, es muy raro que se presenten errores durante la instalación, o por decirlo de otra forma los errores más frecuentes que se presentan a la hora de instalar PyCUDA son los errores de dedo al poner el comando en la terminal.

Con CUDA y PyCUDA instalado está usted en condiciones de utilizar y practicar lo que aprenda a lo largo de estas notas, programar es una tarea que involucra mucha paciencia y la mejor forma de aprender a hacerlo es practicando, animamos al lector a agregar detalles a los programas que aquí mostremos y dejar volar su imaginación con los problemas que presentemos, programar es una tarea altamente creativa. Es de esperarse que haya errores en los códigos, nunca salen bien a la primera, sin embargo como el lector sabrá, o se dará cuenta, la mayor parte del tiempo dedicado a la programación se gasta revisando en qué lugares tiene errores el código, así que si pasa más tiempo revisando y corrigiendo errores que programando deje que su espíritu descanse al saber que todos sufrimos el mismo martirio.

Bienvenido a PyCUDA

CUDA 7.0 en openSUSE 13.2

Como apartado especial detallamos la instalación de CUDA 7.0 en la versión 13.2 de openSUSE.

Como primer paso hay que descargar de la página de NVIDIA el archivo .rpm y el .run correspondientes a la versión deseada de openSUSE después tecleamos

  • sudo rpm --install nombre_del_archivo.rpm
  • sudo zypper refresh
  • sudo zypper install cuda

Esto puede modificar algunas cosas que no queremos que cambien, para evitar eso al finalizar tecleamos

sudo zypper install cuda nvidia-gfxG03-kmp-desktop \ nvidia-uvm-gfxG03-kmp-desktop

  • sudo usermod -a -G video nombre_de_usuario

Para instalar el toolkit y los ejemplos los pasos son exactamente los mismos que para Ubuntu 14.04